2023/12/231203字符

接口

package main

import "fmt"

func main() {
    mouse := Mouse{ "MMM" }
    fmt.Println(mouse.name)  //--> MMM
    fmt.Println(Mouse{ "NNN" })  //--> {NNN}

    testInterface(mouse)  //--> MMM start  MMM end
}

type USB interface {
    start()
    end()
}

type Mouse struct {
    name string
}

func (m Mouse)start() {
    fmt.Println(m.name, "start")
}

func (m Mouse)end() {
    fmt.Println(m.name, "end")
}

func (m Mouse)clear() {
    fmt.Println("clear")
}

// 测试方法
func testInterface(usb USB) {
    usb.start()
    usb.end()
}

空接口

package main

import "fmt"

func main() {
    log(111)  //--> 111

    obj := make(map[string]interface{})
    obj["name"] = "bozai"
    obj["age"] = 18

    log(obj)  //--> map[age:18 name:bozai]
}

func log(o ...interface{}) {
    fmt.Println(o...)
}

接口继承

package main

import "fmt"

func main() {
    var obj Obj = Obj{}

    obj.test1()  //--> test1
    obj.test2()  //--> test2

    var car Car = obj
    car.test1()  //--> test1  car 只能调用他自己的方法
}

type Car interface {
    test1()
}

type Bwm interface {
    Car
    test2()
}

type Obj struct {}

func (o Obj) test1() {
    fmt.Println("test1")
}

func (o Obj) test2() {
    fmt.Println("test2")
}